package code

import (
	"fmt"
	"time"
)

func ProcessFor21() {
	step := 2
	for step > 0 {
		step--
		fmt.Println(step)
		return
	}
	fmt.Println("结束后的语句-------")
}

func ProcessFor22() {
	step := 2
	for step > 0 {
		step--
		fmt.Println(step)
		break
	}
	fmt.Println("结束后的语句------")
}

func ProcessFor23() {
	step := 2
	for step > 0 {
		step--
		fmt.Println(step)
		panic("出错了")
	}
	fmt.Println("结束后的语句-----")
}

func ProcessFor24() {
	for i := 0; i < 10; i++ {
		if i == 2 {
			goto breakHere
		}
	}
	// 不继续执行下面代码
	return
breakHere:
	fmt.Println("done")
}

func ProcessFor25() {
	var slice []int = []int{1, 2, 3, 4, 5}
	for index, value := range slice {
		// 1.22版本这里会输出 1,2,3,4,5
		// 1.22版本之前， 大概率会输出5,5,5,5,5
		// 这里原因是1.22版本每次循环 index, value会创建新的变量, 而之前是共享变量
		go func() {
			fmt.Printf("index:%d, value:%d \n", index, value)
		}()
	}
	for i := 0; i < 100; i++ {
		time.Sleep(100 * time.Millisecond)
	}
}

func ProcessFor26() {
	for value := range 10 {
		// 1.22版本, 支持整型循环
		// 0 1 2 3 ... 8 9
		fmt.Println(value)
	}
}
